package com.bsoft.gol.hcs.specialist.service;

import ctd.controller.exception.ControllerException;
import ctd.util.annotation.RpcService;
import com.bsoft.gol.hcs.specialist.bean.request.GroupChronicDeleteRequest;
import com.bsoft.gol.hcs.specialist.bean.request.GroupChronicRecordExtendRequest;
import com.bsoft.gol.hcs.specialist.bean.request.GroupChronicRecordQo;
import com.bsoft.gol.hcs.specialist.bean.request.GroupChronicRecordStagesRequest;
import com.bsoft.gol.hcs.specialist.bean.response.*;

import java.util.List;
import java.util.Map;

/**
 * 患者视图service
 *
 * @author lanyu
 * @date 2021年10月21日 15:52
 */
public interface IPatientViewService {

    /**
     * 根据入组记录id和病种id获取扩展属性信息
     * @param qo
     * @return
     */
    @RpcService
    List<GroupExtendPropertyResponse> queryGroupRecordExtendList(GroupChronicRecordQo qo) throws ControllerException;

    /**
     * 根据入组记录id和病种id获取分期属性信息
     * @param qo
     * @return
     */
    @RpcService
    List<GroupStagesListResponse> queryGroupRecordStagesList(GroupChronicRecordQo qo) throws ControllerException;

    /**
     * 保存或更新分期属性信息
     * @param request
     */
    @RpcService
    void saveOrUpdateStages(GroupChronicRecordStagesRequest request) throws ControllerException;

    /**
     * 保存扩展属性信息
     * @param request
     */
    @RpcService
    void saveExtendProperty(GroupChronicRecordExtendRequest request) throws ControllerException;

    /**
     * 删除扩展属性
     * @param request
     */
    @RpcService
    void deleteExtendProperty(GroupChronicDeleteRequest request) throws ControllerException;

    /**
     * 删除分期属性
     * @param request
     */
    @RpcService
    void deleteStages(GroupChronicDeleteRequest request) throws ControllerException;

    /**
     * 获取治疗记录
     * @param qo
     * @return
     */
    @RpcService
    List<TreatmentRecordResponse> queryTreatmentRecord(GroupChronicRecordQo qo) throws ControllerException;

    /**
     * 获取手术记录
     * @param qo
     * @return
     */
    @RpcService
    List<OperativeRecordResponse> queryOperativeRecord(GroupChronicRecordQo qo) throws ControllerException;

    /**
     * 获取用药记录
     * @param qo
     * @return
     */
    @RpcService
    List<MedicalRecordResponse> queryMedicalRecord(GroupChronicRecordQo qo) throws ControllerException;

    /**
     * 获取住院/门诊记录
     * @param qo
     * @return
     */
    @RpcService
    InAndOutPatientInfoRecordList queryPatientInfoRecord(GroupChronicRecordQo qo) throws ControllerException;

    /**
     * 关联指标记录获取
     * @param qo
     * @return
     */
    @RpcService
    List<CrucialRecordResponse> queryCrucialRecord(GroupChronicRecordQo qo) throws ControllerException;

    /**
     * 获取随访记录
     * @param qo
     * @return
     * @throws ControllerException
     */
    @RpcService
    Map<String,List<FollowUpRecordsResponse>> queryFollowUpRecord(GroupChronicRecordQo qo) throws ControllerException;

    /**
     * 根据病种id和扩展属性id获取属性值
     * @param qo
     * @return
     * @throws ControllerException
     */
    @RpcService
    List<Map<String, Object>> queryDiseaseExtendProperty(GroupChronicDeleteRequest qo) throws ControllerException;
}
